package com.pawernode.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

/**
 * 自定义确认回调类，用于处理消息是否成功发送到RabbitMQ交换机
 */
@Component
@Slf4j
public class MyConfirmCallBack implements RabbitTemplate.ConfirmCallback {
    /**
     * 回调方法，用于处理消息发送的确认结果
     *
     * @param correlationData 消息的关联数据，用于标识消息
     * @param ack 消息是否成功发送到交换机的标志，true表示成功，false表示失败
     * @param cause 如果消息发送失败，提供失败的原因
     */
    @Override
    public void confirm(CorrelationData correlationData, boolean ack, String cause) {
        if (ack) {
            // 当消息成功发送到交换机时，记录日志信息
            log.info("消息发送成功");
            return;
        } else {
            // ack 为 false 表示没有到达交换机，记录错误日志并提供失败原因
            log.error("消息发送失败，原因：{}", cause);
        }
    }
}
